Problem statement: zenit12kkd
D: Šifra |
25 bodov | Časový limit: 100 ms |
Lukáš sa počas tréningového roztancovávania ocitol v podobnej situácii
ako počas školského kola, avšak v inej roli. Vidí, ako si chlapec v jednom
rohu posiela šifrované správy s krásnou tanečníčkou v opačnom rohu.
Lukáš je teraz v roli jedného z ľudí, ktorí podávajú lístoček
a ako správny zvedavý Man In The Middle by si rád prečítal posielané správy.
Mohol by sa predsa naučiť niečo o nadväzovaní nových kontaktov!
Na rozdiel od Lukáša v školskom kole zvolil náš šifrant o niečo sofistikovanejší spôsob - substitučnú
šifru. Pri substitučnej šifre nahrádzame písmená inými písmenami a všetky ostatné symboly
nechávame na mieste. Uvažujme 26 veľkých písmen anglickej abecedy. Ak napríklad
A nahrádzame znakom C, B nahrádzame znakom A a C nahrádzame znakom B, potom šifra
textu "AB, BC." je "CA, AB.". Aby sme vedeli text jednoznačne dešifrovať,
je potrebné, aby bolo každé písmeno obrazom práve jedného z písmen. Skutočnosť, ktoré písmeno
sa zobrazí na ktoré je kľúčom k šifrovaniu a dešifrovaniu správ. Pre úspešnú komunikáciu
musia túto informáciu mať obe komunikujúce strany. Zdá sa, že na začiatku
komunikácie náš tanečník tento kľúč poslal tanečníčke. Lukáš bohužiaľ túto správu nezachytil,
ale podarilo sa mu zachytiť dve správy, o ktorých vie ich šifrovanú aj nešifrovanú podobu,
pretože sa pozeral cez rameno tanečníka. Tieto dve správy máte ako príklady vstupu a výstupu.
Na vstupe vášho programu bude tretia správa tanečníka, ktorá je šifrovaná
rovnakým kľúčom ako uvedené dve v príklade. Vstup pozostáva len zo znakov veľkých anglických písmen,
medzier, bodiek a symbolov nových riadkov (jeden znak \
n, ASCII kód 10). Výstup bude rozšifrovaný text. Dbajte na
presné zachovanie formátu správy, všetky nepísmenové znaky musia ostať na mieste! Nepredpokladajte
o vstupe nič rozumné: ani že je text zmysluplný, ani že v ňom nesmú byť dve bodky
za sebou, ani že neobsahuje prázdny riadok, ani že na konci riadku nie je medzera navyše (ktorú musíte
uviesť vo výstupe)! Dĺžka textu je najviac 2000 znakov, vstup pozostáva z najviac 100 riadkov.
>
Príklady:
| |
S XJKYPGXPVX LJG LY SXCBMXMY PXTYF. PUJ LJG LX DBCYGSMY
DB EGNPVX X BWDYCBCXMY
NBENR
OVBEMXO.
|
| |
| |
Z AMFITEATRA SME SI ZAVOLALI TAXIK. TYM SME SA DOVIEZLI
DO CENTRA A OBDIVOVALI
NOCNU
WROCLAW.
|
| |
| |
C FXSDBJ HVBQVXJG AG EZUWX.
|
| |
| |
V KAZDOM PROGRAME JE CHYBA.
|
| |